Computers and other host devices are often connected with one or more storage devices via a storage area network (or “SAN”). It is well known to establish such networks using the Fibre Channel protocol, which is well suited for transmitting storage data over networks due to its ability to carry different networking and channel protocols. For instance, it is possible to transmit channel protocols such as SCSI (Small Computer System Interface) or HIPPI (High Performance Parallel Interface) over Fibre Channel links.
The Fibre Channel communications protocol is generally considered to involve five independent layers (Fibre Channel-0, Fibre Channel-1, Fibre Channel-2, Fibre Channel-3, and Fibre Channel-4). Fibre Channel-0 covers the physical characteristics that allow communications over a variety of physical media, such as copper wiring or fiber optics. The Fibre Channel-1 layer defines the 8B/10B transmission coding developed by Widmer and Franasak of IBM. The Fibre Channel-2 layer defines the Fibre Channel framing and signaling protocol. Fibre Channel-3 defines various link service functions. The Fibre Channel-4 level defines the implementation of the different protocols that can be carried over the Fibre Channel connection, such as SCSI or HIPPI.
The Fibre Channel-2 layer defines the Fibre Channel frame 10 as shown in FIG. 1. A frame 10 always starts with an ordered set (a specially defined four byte grouping that cannot be mistaken for data) that is known as the start-of-frame delimiter 12. Following this start-of-frame ordered set 12 is a 24-byte frame header 14 that contains basic information about the frame 10, including the type of data being transmitted, a sequence ID, a sequence count indicating the position of frame 10 in the sequence 30, and an exchange ID identifying the exchange 40 to which the sequence 30 belongs. After the frame header 14 is the 2112-byte data payload 16, which contains the actual data being transmitted. In some circumstances, optional headers 18 of up to sixty-four bytes are included in data payload 16 with along with 2048 bytes of actual data 20. Following the data payload 16 is the frame CRC value 22 and the end of frame ordered set 24. The Fibre Channel-2 layer also defines a Fibre Channel sequence as one or more related frames 10 flowing in the same direction on a link and a Fibre Channel exchange as one or more sequences used to complete a single communication operation.
Fibre Channel based storage area networks are generally limited to campus-sized environments as a result of Fibre Channel's 10 kilometer distance limitation. Recent technology developments have been proposed that would allow these localized SANs to be connected together over Internet protocol (IP) networks. An organization known as the Internet Engineering Task Force (IETF) has helped to develop the specifications for one such technology. This technology, known as Fibre Channel over IP (FCIP or Fibre Channel/IP), enables the tunneling of Fibre Channel data between SANs over IP networks. The FCIP technology relies upon the transport layer (such as TCP) for congestion control and management and relies upon both the transport layer and the Fibre Channel protocol for data error and data loss recovery.
The FCIP specification tunnels Fibre Channel data by embedding each Fibre Channel frame 10 within a single IP datagram. This one-to-one relationship is possible because the maximum size of an encapsulated Fibre Channel frame 10 will not exceed 2148 bytes, while an IP datagram (according to IPv4 as defined in RFC 791) can hold 65535 8-bit bytes (including the 20 bytes that are required for the IP header). Thus, after adding the transport layer and IP headers, the FCIP protocol will turn a stream of maximum-length Fibre Channel frames 10 into a series of 2168 byte IP datagrams. Even if the 40-byte optional IP header is utilized, each IP datagram will be only 2208 bytes in length and hence much smaller than the maximum size allowed for IP datagrams.
Once the IP datagrams are created, they are then passed over a physical network utilizing a data link protocol such as ATM, Frame Relay, Ethernet, or IEEE 802.3. In the typical environment, the IP datagrams are divided into Ethernet frames that have a maximum size of 1500 bytes (in other words, the maximum transmission unit or MTU of an Ethernet network is 1500 bytes). Thus, if an IP datagram containing a maximum sized Fibre Channel frame 10 is sent over an Ethernet connection, the 2168 byte IP datagram will be divided into two separate Ethernet frames. In most FCIP implementations, this means that after a single Fibre Channel frame 10 is converted into a single IP datagram, the datagram is then divided into one full Ethernet frame and one approximately half-full Ethernet frame. Even though the second Ethernet frame is smaller than the first frame, the overhead required for this half-empty frame to reach its final destination is generally the same as the full Ethernet frame. This utilization of half-empty Ethernet frames by the FCIP standard unfortunately reduces the efficiency of the FCIP connection. What is needed is a way to implement a Fibre Channel over IP that fully utilizes the available IP bandwidth.